#ifndef __SPI_SOFT_H__
#define __SPI_SOFT_H__

#include "stm32f4xx.h"
#include "systick.h"


/*************** pin config *****************/
// scl 
#define SPI_SOFT_CLK_RCU	RCC_AHB1Periph_GPIOB
#define SPI_SOFT_CLK_PORT	GPIOB
#define SPI_SOFT_CLK_PIN	GPIO_Pin_3

// MOSI 
#define SPI_SOFT_MOSI_RCU	RCC_AHB1Periph_GPIOB
#define SPI_SOFT_MOSI_PORT	GPIOB
#define SPI_SOFT_MOSI_PIN	GPIO_Pin_5

// MISO 
#define SPI_SOFT_MISO_RCU	RCC_AHB1Periph_GPIOB
#define SPI_SOFT_MISO_PORT	GPIOB
#define SPI_SOFT_MISO_PIN	GPIO_Pin_4

// CS 片选哪部分用到 哪部分在实现 

/************** spi config *******************/
// 时钟极性 0:空闲为低电平 1:空闲为高电平
#define SPI0_CPOL		0
// 时钟相位 0:数据在时钟的第一个边沿采样 
//         1:数据在时钟的第二个边沿采样。
#define SPIO_CPHA		0

/*************** gpio opt ********************/

#define SPI_SOFT_CLK(bit)		GPIO_WriteBit(SPI_SOFT_CLK_PORT, SPI_SOFT_CLK_PIN, bit?Bit_SET:Bit_RESET)
#define SPI_SOFT_MOSI(bit)		GPIO_WriteBit(SPI_SOFT_MOSI_PORT, SPI_SOFT_MOSI_PIN,bit?Bit_SET:Bit_RESET)
#define SPI_SOFT_MISO_STATE()    GPIO_ReadInputDataBit(SPI_SOFT_MISO_PORT, SPI_SOFT_MISO_PIN)

/*************** cs config ********************/
// cs片选相关配置 需要再调用的文件中实现


void SPI_SOFT_INIT();
void SPI_SOFT_WRITE_BYTE(uint8_t data);
uint8_t SPI_SOFT_READ_BYTE();
#endif